#ifndef _IRQ_CONTORL_H_
#define _IRQ_CONTORL_H_

#include <stdint.h>
#include <string.h>
#include <stdbool.h>

typedef bool (*pEventIrqHandle)(void);

/**
 * @brief 中断控制表结构
 * 
 */
typedef struct IrqControlNode
{
  pEventIrqHandle pEventCallback;            // 事件中断回调
  
  struct IrqControlNode *pNextItem;          // 子节点
  struct IrqControlNode *pPreviousItem;      // 父节点
} *IrqControlNode_t, IrqControl_t;

/**
 * @brief 添加新的中断事件表
 * 
 * @param NewItem - 指向静态中断表地址的指针变量
 * @param Event   - 中断事件回调函数
 * @return bool   - 新增状态(ture-成功  false-失败)
 */
extern bool AddIrqNewTable(IrqControlNode_t NewItem, pEventIrqHandle Event);

/**
 * @brief 从中断表中移除对应中断事件
 * 
 * @param IrqItem - 目标中断事件
 * @return bool   - 删除状态(ture-成功  false-失败)
 */
extern bool DeleteSpecificTable(IrqControlNode_t IrqItem);

/**
 * @brief 遍历中断事件表
 * 
 */
extern void TraversalIrqTable(void);

#endif
